﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WuDada.Core.SystemApplications.Domain;

namespace WuDada.Core.SystemApplications.Service
{
    public interface ICityService
    {
        /// <summary>
        /// 新增縣市
        /// </summary>
        /// <param name="cityVO">被新增的縣市</param>
        /// <returns>新增後的縣市</returns>
        CityVO CreateCity(CityVO cityVO);

        /// <summary>
        /// 更新縣市
        /// </summary>
        /// <param name="cityVO">被更新的縣市</param>
        /// <returns>更新後的縣市</returns>
        CityVO UpdateCity(CityVO cityVO);

        /// <summary>
        /// 取得縣市 By 識別碼
        /// </summary>
        /// <param name="cityId">識別碼</param>
        /// <returns>縣市</returns>
        CityVO GetCityById(int cityId);

        /// <summary>
        /// 取得縣市清單
        /// </summary>
        /// <returns>縣市清單</returns>
        IList<CityVO> GetCityList();

        /// <summary>
        /// 取得縣市 By 縣市名稱
        /// </summary>
        /// <param name="cityName">縣市名稱</param>
        /// <returns>縣市</returns>
        CityVO GetCityByCityName(string cityName);

        /// <summary>
        /// 新增地區
        /// </summary>
        /// <param name="areaVO">被新增的地區</param>
        /// <returns>新增後的地區</returns>
        AreaVO CreateArea(AreaVO areaVO);

        /// <summary>
        /// 更新地區
        /// </summary>
        /// <param name="areaVO">被更新的地區</param>
        /// <returns>更新後的地區</returns>
        AreaVO UpdateArea(AreaVO areaVO);

        /// <summary>
        /// 取得地區 By 識別碼
        /// </summary>
        /// <param name="areaId">識別碼</param>
        /// <returns>地區</returns>
        AreaVO GetAreaById(int areaId);

        /// <summary>
        /// 取得地區清單
        /// </summary>
        /// <returns>地區清單</returns>
        IList<AreaVO> GetAreaList();

        /// <summary>
        /// 取得地區 By 地區名稱 And CityId
        /// </summary>
        /// <param name="areaName">地區名稱</param>
        /// <param name="cityId">CityId</param>
        /// <returns>地區</returns>
        AreaVO GetAreaByAreaNameAndCityId(string areaName,int cityId);

        /// <summary>
        /// 取得地區清單 By CityId
        /// </summary>
        /// <param name="cityId">CityId</param>
        /// <returns>地區清單</returns>
        IList<AreaVO> GetAreaListByCityId(int cityId);
    }
}
